import wx from "weixin-webview-jssdk";

//判断是否是微信环境
export const isWeiXin = () => {
    var ua = window.navigator.userAgent.toLowerCase();
    if (ua.match(/MicroMessenger/i) == 'micromessenger') {
        return true
    } else {
        return false
    }
}
// 微信页面跳转
export const toPage = (url) => {
    wx.miniProgram.getEnv(function (res) {
        if (res.miniprogram) {
            // "/pages/payment/payment"
            wx.miniProgram.navigateTo({ url });
        }
    });
}
export const redirectTo = (url) => {
    wx.miniProgram.getEnv(function (res) {
        if (res.miniprogram) {
            // "/pages/payment/payment"
            wx.miniProgram.redirectTo({ url });
        }
    });
}
export const reLaunch = (url) => {
    wx.miniProgram.getEnv(function (res) {
        if (res.miniprogram) {
            // "/pages/payment/payment"
            wx.miniProgram.reLaunch({ url });
        }
    });
}

class Tools {
    /**
     * 设置页面标题
     * @param title 标题
     */
    static setNavigationTitle(title) {
        document.title = title;
    }

    /**
     * getStorage
     * @param key
     * @returns
     */
    static getStorage(key) {
        return window.localStorage.getItem(key);
    }

    /**
     * setStorage
     * @param key
     * @param val
     */
    static setStorage(key, val) {
        let v = val;
        if (typeof val === "object") {
            v = JSON.stringify(val);
        }
        window.localStorage.setItem(key, v);
    }

    /**
     * remove storage
     * @param key
     */
    static removeStorage(key) {
        window.localStorage.removeItem(key);
    }

    /**
     * 数据字典转换
     */
    static setTypeString = (state, stateArr) => {
        //状态码 转后台返回的状态
        const string = stateArr.find((item) => item.key === state);
        if (string) {
            return string.value;
        } else {
            return "";
        }
    };
    static getArrayItem = (state, stateArr) => {
        const string = stateArr.find(
            (item) => item.key?.toString() === state?.toString()
        );
        if (string) {
            return string;
        } else {
            return "";
        }
    };

    /**
     * 自动生成不重复id
     */
    static getUid = () => {
        let str = Number(Math.random().toString().slice(3, 8) + Date.now()).toString(36);
        return str.padEnd(12, "0")
    }

    /**
    * 文件转base64
    */
    static fileToBase64(file, callback) {
        var reader = new FileReader();
        reader.onload = function (event) {
            var data = event.target?.result;
            callback(data);
        };
        reader.readAsDataURL(file);
    }

    /**
    * base64转文件
    */
    static base64toFile(dataurl, filename = 'file' + Date.now()) {
        let arr = dataurl.split(',');
        let mime = arr[0].match(/:(.*?);/)[1];
        // suffix是该文件的后缀
        let suffix = mime.split('/')[1];
        // atob 对经过 base-64 编码的字符串进行解码
        let bstr = atob(arr[1]);
        // n 是解码后的长度
        let n = bstr.length;
        // Uint8Array 数组类型表示一个 8 位无符号整型数组 初始值都是 数子0
        let u8arr = new Uint8Array(n);
        // charCodeAt() 方法可返回指定位置的字符的 Unicode 编码。这个返回值是 0 - 65535 之间的整数
        while (n--) {
            u8arr[n] = bstr.charCodeAt(n);
        }
        // new File返回File对象 第一个参数是 ArraryBuffer 或 Bolb 或Arrary 第二个参数是文件名
        // 第三个参数是 要放到文件中的内容的 MIME 类型
        return new File([u8arr], `${filename}.${suffix}`, {
            type: mime,
        });
    }
}

export default Tools;